home *** CD-ROM | disk | FTP | other *** search
- * xlogo.s
- * Xロゴ / 最高速 = 2
- * by Mitsuky
-
- .include DOSCALL.MAC
-
- SPEED_MAX equ 2
-
- .offset 8 * 引き数
- _source_ptr: .ds.l 1
- _dest_ptr: .ds.l 1
- _speed: .ds.l 1
- _vdisp: .ds.l 1
-
-
- .offset 0
- gvram_ptr: .ds.l 1
- counter: .ds.w 1
- work_size:
-
-
- gpos .macro pos_x,pos_y
- .dc.w (pos_y*1024)+(pos_x*2)
- .endm
-
- dpos .macro pos_x,pos_y,wait
- .dc.l wait<<24|pos_y<<4<<10|pos_x<<4<<1
- .endm
-
-
- .text
- .even
-
- .dc.b 'WL10',$0d,$0a
- .dc.b 'Xロゴ / 最高速 = 2',$0d,$0a
- .dc.b ' by Mitsuky',$0d,$0a
- .dc.b $1a
- .even
-
- xlogo:
- link a6,#0
- movem.l d1-d7/a0-a5,-(sp)
-
- suba.l a5,a5
-
- move.l _speed(a6),d0
- bmi xlogo_ask_speed
- cmpi.l #SPEED_MAX,d0
- bhi xlogo_err
-
- tst.l _vdisp(a6)
- bmi xlogo_ask_vdisp
-
-
- move.l #work_size*(512/16)*(512/16),-(sp)
- DOS _MALLOC
- addq.w #4,sp
- tst.l d0
- bmi xlogo_err
- movea.l d0,a5 * a5.l = ワークのアドレス
-
-
- movea.l _source_ptr(a6),a2 * a2.l = 転送元アドレス
- movea.l _dest_ptr(a6),a3 * a3.l = 転送先アドレス
- lea.l table2(pc),a1 * a1.l = table2 のポインタ
-
- * ワークの初期化
- movea.l a5,a0
- move.w #(512/16)*(512/16)-1,d0
- moveq.l #-1,d1
- @@: move.w d1,counter(a0)
- lea.l work_size(a0),a0
- dbra d0,@b
-
-
- lea.l appear(pc),a0
- clr.w (a0) * 出現カウンター
- xlogo_loop:
- moveq.l #SPEED_MAX,d1
- sub.l _speed(a6),d1
- @@: move.l _vdisp(a6),a0
- jsr (a0)
- dbra d1,@b
-
- sf.b d5
-
-
- * ワークを出現させる
- 1:
- lea.l appear(pc),a0
- subq.w #1,(a0)
- bpl 5f
- move.l (a1)+,d0
- bmi 4f
-
- movea.l a5,a4 * a4.l = ワークのアドレス
- 2: tst.w counter(a4)
- bmi 3f
- lea.l work_size(a4),a4
- bra 2b
- 3: move.l d0,d1
- andi.l #$00ffffff,d1
- move.l d1,gvram_ptr(a4)
- clr.w counter(a4)
- rol.l #8,d0
- andi.w #$00ff,d0
- movea.l a5,a4
- lea.l appear(pc),a0
- move.w d0,(a0)
- bra 1b
- 4:
- lea.l appear(pc),a0
- move.w #32767,(a0)
- 5:
-
- movem.l a1,-(sp) **
-
-
- move.w #(512/16)*(512/16)-1,d7 * d7.w = ループ回数
- movea.l a5,a4
- xlogo_loop_2:
- tst.w counter(a4)
- bmi xlogo_loop_2_end
-
-
- st.b d5
-
- moveq.l #4-1,d6
- @@:
- movea.w counter(a4),a1
- move.w a1,d0
- addq.w #1,d0
- move.w d0,counter(a4)
- add.w a1,a1
- movea.w table(pc,a1.w),a1
- adda.l gvram_ptr(a4),a1
-
- movea.l a2,a0
- adda.l a1,a0
- move.w (a0),d1
- move.w 8*2(a0),d2
- move.w 8*512*2(a0),d3
- move.w 8*512*2+8*2(a0),d4
-
- movea.l a3,a0
- adda.l a1,a0
- move.w d1,(a0)
- move.w d2,8*2(a0)
- move.w d3,8*512*2(a0)
- move.w d4,8*512*2+8*2(a0)
-
- dbra d6,@b
-
-
- move.w counter(a4),d0
- cmpi.w #64,d0
- bcs @f
- move.w #-1,counter(a4)
- @@:
-
- xlogo_loop_2_end:
- lea.l work_size(a4),a4
- dbra d7,xlogo_loop_2
-
- movem.l (sp)+,a1 **
-
- tst.b d5
- bne xlogo_loop
-
- moveq.l #0,d0
- xlogo_rts:
- move.l a5,d1
- beq @f
- movem.l d0,-(sp)
- pea.l (a5)
- DOS _MFREE
- addq.w #4,sp
- movem.l (sp)+,d0
- @@:
- movem.l (sp)+,d1-d7/a0-a5
- unlk a6
- rts
-
-
- *********************************************************
- table:
- gpos 0,0
- gpos 4,4
- gpos 2,6
- gpos 5,1
- gpos 7,3
- gpos 2,2
- gpos 6,6
- gpos 3,7
- gpos 7,1
- gpos 0,4
- gpos 7,7
- gpos 4,2
- gpos 1,5
- gpos 6,0
- gpos 3,3
- gpos 5,7
- gpos 6,2
- gpos 2,0
- gpos 3,5
- gpos 6,4
- gpos 3,1
- gpos 7,5
- gpos 1,3
- gpos 4,6
- gpos 5,3
- gpos 4,0
- gpos 0,2
- gpos 1,7
- gpos 5,5
- gpos 1,1
- gpos 0,6
- gpos 2,4
-
-
- gpos 1,0
- gpos 5,4
- gpos 3,6
- gpos 6,1
- gpos 0,3
- gpos 3,2
- gpos 7,6
- gpos 4,7
- gpos 0,1
- gpos 1,4
- gpos 0,7
- gpos 5,2
- gpos 2,5
- gpos 7,0
- gpos 4,3
- gpos 6,7
- gpos 7,2
- gpos 3,0
- gpos 4,5
- gpos 7,4
- gpos 4,1
- gpos 0,5
- gpos 2,3
- gpos 5,6
- gpos 6,3
- gpos 5,0
- gpos 1,2
- gpos 2,7
- gpos 6,5
- gpos 2,1
- gpos 1,6
- gpos 3,4
-
-
- * 0 1 2 3 4 5 6 7
- * 00..17..25..13.. 0
- * ..29..20..03..08 1
- * 26..05..11..16.. 2
- * ..22..14..24..04 3
- * 09..31..01..19.. 4
- * ..12..18..28..21 5
- * 30..02..23..06.. 6
- * ..27..07..15..10 7
-
- * 0 1 2 3 4 5 6 7
- * ..00..17..25..13 0
- * 08..29..20..03.. 1
- * ..26..05..11..16 2
- * 04..22..14..24.. 3
- * ..09..31..01..19 4
- * 21..12..18..28.. 5
- * ..30..02..23..06 6
- * 10..27..07..15.. 7
-
- **** ****
- .even
- xlogo_err:
- moveq.l #-1,d0
- bra xlogo_rts
-
-
- **** ****
- xlogo_ask_speed:
- moveq.l #SPEED_MAX,d0
- bra xlogo_rts
-
-
- **** ****
- xlogo_ask_vdisp:
- move.l _speed(a6),d0
- lea.l ask_vdisp_table(pc),a0
- add.w d0,d0
- move.w (a0,d0.w),d0
- bra xlogo_rts
-
- ask_vdisp_table:
- .dc.w 153,102,51
-
-
- table2:
- * 中心枠
- dpos 2,4,0
- dpos 3,4,0
- dpos 4,4,0
- dpos 5,4,0
- dpos 6,4,0
- dpos 7,4,0
- dpos 8,4,0
- dpos 9,4,0
- dpos 10,4,0
- dpos 11,4,0
- dpos 12,4,0
- dpos 13,4,0
- dpos 14,4,0
-
- dpos 3,5,0
- dpos 3,6,0
- dpos 4,7,0
- dpos 5,8,0
- dpos 5,9,0
- dpos 6,10,0
- dpos 7,11,0
- dpos 7,12,0
- dpos 8,13,0
- dpos 9,14,0
- dpos 9,15,0
- dpos 10,16,0
- dpos 11,17,0
- dpos 11,18,0
- dpos 12,19,0
- dpos 13,20,0
- dpos 13,21,0
- dpos 14,22,0
- dpos 15,23,0
- dpos 15,24,0
- dpos 16,25,0
- dpos 17,26,0
-
- dpos 14,5,0
- dpos 15,6,0
- dpos 16,7,0
- dpos 16,8,0
- dpos 17,9,0
- dpos 18,10,0
- dpos 18,11,0
- dpos 19,12,0
- dpos 20,13,0
- dpos 20,14,0
- dpos 21,15,0
- dpos 22,16,0
- dpos 22,17,0
- dpos 23,18,0
- dpos 24,19,0
- dpos 24,20,0
- dpos 25,21,0
- dpos 26,22,0
- dpos 26,23,0
- dpos 27,24,0
- dpos 28,25,0
- dpos 28,26,0
-
- dpos 17,27,0
- dpos 18,27,0
- dpos 19,27,0
- dpos 20,27,0
- dpos 21,27,0
- dpos 22,27,0
- dpos 23,27,0
- dpos 24,27,0
- dpos 25,27,0
- dpos 26,27,0
- dpos 27,27,0
- dpos 28,27,0
- dpos 29,27,1
-
-
- * 左枠
- dpos 0,27,0
- dpos 1,27,0
- dpos 2,27,0
- dpos 3,27,0
- dpos 4,27,0
- dpos 5,27,0
- dpos 6,27,0
- dpos 7,27,0
- dpos 8,27,0
- dpos 9,27,0
- dpos 10,27,0
- dpos 11,27,0
- dpos 12,27,0
- dpos 13,27,0
- dpos 14,27,0
-
- dpos 8,17,0
- dpos 8,18,0
- dpos 9,19,0
- dpos 10,20,0
- dpos 10,21,0
- dpos 11,22,0
- dpos 12,23,0
- dpos 12,24,0
- dpos 13,25,0
- dpos 14,26,0
-
- dpos 7,18,0
- dpos 6,19,0
- dpos 6,20,0
- dpos 5,21,0
- dpos 4,22,0
- dpos 3,23,0
- dpos 2,24,0
- dpos 2,25,0
- dpos 1,26,0
-
-
- * 右枠
- dpos 17,4,0
- dpos 18,4,0
- dpos 19,4,0
- dpos 20,4,0
- dpos 21,4,0
- dpos 22,4,0
- dpos 23,4,0
- dpos 24,4,0
- dpos 25,4,0
- dpos 26,4,0
- dpos 27,4,0
- dpos 28,4,0
- dpos 29,4,0
- dpos 30,4,0
- dpos 31,4,0
-
- dpos 17,5,0
- dpos 18,6,0
- dpos 19,7,0
- dpos 19,8,0
- dpos 20,9,0
- dpos 21,10,0
- dpos 21,11,0
- dpos 22,12,0
- dpos 23,13,0
- dpos 23,14,0
-
- dpos 30,5,0
- dpos 29,6,0
- dpos 29,7,0
- dpos 28,8,0
- dpos 27,9,0
- dpos 26,10,0
- dpos 25,11,0
- dpos 25,12,0
- dpos 24,13,16
-
-
-
- *左中
- .irp %A,7,8
- dpos %A,19,0
- .endm
- .irp %A,7,8,9
- dpos %A,20,0
- .endm
- .irp %A,6,7,8,9
- dpos %A,21,0
- .endm
- .irp %A,5,6,7,8,9,10
- dpos %A,22,0
- .endm
- .irp %A,4,5,6,7,8,9,10,11
- dpos %A,23,0
- .endm
- .irp %A,3,4,5,6,7,8,9,10,11
- dpos %A,24,0
- .endm
- .irp %A,3,4,5,6,7,8,9,10,11,12
- dpos %A,25,0
- .endm
- .irp %A,2,3,4,5,6,7,8,9,10,11,12,13
- dpos %A,26,0
- .endm
-
-
- *右中
- .irp %A,18,19,20,21,22,23,24,25,26,27,28,29
- dpos %A,5,0
- .endm
- .irp %A,19,20,21,22,23,24,25,26,27,28
- dpos %A,6,0
- .endm
- .irp %A,20,21,22,23,24,25,26,27,28
- dpos %A,7,0
- .endm
- .irp %A,20,21,22,23,24,25,26,27
- dpos %A,8,0
- .endm
- .irp %A,21,22,23,24,25,26
- dpos %A,9,0
- .endm
- .irp %A,22,23,24,25
- dpos %A,10,0
- .endm
- .irp %A,22,23,24
- dpos %A,11,0
- .endm
- * .irp %A,23,24
- * dpos %A,12,0
- * .endm
- dpos 23,12,0
- dpos 24,12,1
-
-
- *中心中
- .irp %A,4,5,6,7,8,9,10,11,12,13
- dpos %A,5,0
- .endm
- .irp %A,4,5,6,7,8,9,10,11,12,13,14
- dpos %A,6,0
- .endm
- .irp %A,5,6,7,8,9,10,11,12,13,14,15
- dpos %A,7,0
- .endm
-
- .irp %A,6,7,8,9,10,11,12,13,14,15
- dpos %A,8,0
- .endm
- .irp %A,6,7,8,9,10,11,12,13,14,15,16
- dpos %A,9,0
- .endm
- .irp %A,7,8,9,10,11,12,13,14,15,16,17
- dpos %A,10,0
- .endm
-
- .irp %A,8,9,10,11,12,13,14,15,16,17
- dpos %A,11,0
- .endm
- .irp %A,8,9,10,11,12,13,14,15,16,17,18
- dpos %A,12,0
- .endm
- .irp %A,9,10,11,12,13,14,15,16,17,18,19
- dpos %A,13,0
- .endm
-
- .irp %A,10,11,12,13,14,15,16,17,18,19
- dpos %A,14,0
- .endm
- .irp %A,10,11,12,13,14,15,16,17,18,19,20
- dpos %A,15,0
- .endm
- .irp %A,11,12,13,14,15,16,17,18,19,20,21
- dpos %A,16,0
- .endm
-
- .irp %A,12,11,12,13,14,15,16,17,18,19,20,21
- dpos %A,17,0
- .endm
- .irp %A,12,11,12,13,14,15,16,17,18,19,20,21,22
- dpos %A,18,0
- .endm
- .irp %A,13,12,13,14,15,16,17,18,19,20,21,22,23
- dpos %A,19,0
- .endm
-
- .irp %A,14,15,16,17,18,19,20,21,22,23
- dpos %A,20,0
- .endm
- .irp %A,14,15,16,17,18,19,20,21,22,23,24
- dpos %A,21,0
- .endm
- .irp %A,15,16,17,18,19,20,21,22,23,24,25
- dpos %A,22,0
- .endm
-
- .irp %A,16,17,18,19,20,21,22,23,24,25
- dpos %A,23,0
- .endm
- .irp %A,16,17,18,19,20,21,22,23,24,25,26
- dpos %A,24,0
- .endm
- .irp %A,17,18,19,20,21,22,23,24,25,26,27
- dpos %A,25,0
- .endm
-
- * .irp %A,18,19,20,21,22,23,24,25,26,27
- .irp %A,18,19,20,21,22,23,24,25,26
- dpos %A,26,0
- .endm
- dpos 27,26,16
-
-
-
- * 外側
- .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
- dpos %A,0,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
- dpos %A,1,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
- dpos %A,2,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
- dpos %A,3,0
- .endm
-
- .irp %A,0,1,15,16
- dpos %A,4,0
- .endm
- .irp %A,0,1,2,15,16,31
- dpos %A,5,0
- .endm
- .irp %A,0,1,2,16,17,30,31
- dpos %A,6,0
- .endm
- .irp %A,0,1,2,3,17,18,30,31
- dpos %A,7,0
- .endm
- .irp %A,0,1,2,3,4,17,18,29,30,31
- dpos %A,8,0
- .endm
- .irp %A,0,1,2,3,4,18,19,28,29,30,31
- dpos %A,9,0
- .endm
- .irp %A,0,1,2,3,4,5,19,20,27,28,29,30,31
- dpos %A,10,0
- .endm
- .irp %A,0,1,2,3,4,5,6,19,20,26,27,28,29,30,31
- dpos %A,11,0
- .endm
- .irp %A,0,1,2,3,4,5,6,20,21,26,27,28,29,30,31
- dpos %A,12,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,21,22,25,26,27,28,29,30,31
- dpos %A,13,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,8,21,22,24,25,26,27,28,29,30,31
- dpos %A,14,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,8,22,23,24,25,26,27,28,29,30,31
- dpos %A,15,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,8,9,23,24,25,26,27,28,29,30,31
- dpos %A,16,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,9,10,23,24,25,26,27,28,29,30,31
- dpos %A,17,0
- .endm
- .irp %A,0,1,2,3,4,5,6,9,10,24,25,26,27,28,29,30,31
- dpos %A,18,0
- .endm
- .irp %A,0,1,2,3,4,5,10,11,25,26,27,28,29,30,31
- dpos %A,19,0
- .endm
- .irp %A,0,1,2,3,4,5,11,12,25,26,27,28,29,30,31
- dpos %A,20,0
- .endm
- .irp %A,0,1,2,3,4,11,12,13,26,27,28,29,30,31
- dpos %A,21,0
- .endm
- .irp %A,0,1,2,3,12,13,27,28,29,30,31
- dpos %A,22,0
- .endm
- .irp %A,0,1,2,13,14,27,28,29,30,31
- dpos %A,23,0
- .endm
- .irp %A,0,1,13,14,27,28,29,30,31
- dpos %A,24,0
- .endm
- .irp %A,0,1,14,15,28,29,30,31
- dpos %A,25,0
- .endm
- .irp %A,0,15,16,29,30,31
- dpos %A,26,0
- .endm
- .irp %A,15,16,30,31
- dpos %A,27,0
- .endm
-
- .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
- dpos %A,28,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
- dpos %A,29,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
- dpos %A,30,0
- .endm
- .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
- dpos %A,31,0
- .endm
-
-
-
-
- .dc.l -1 * 終端フラグ
-
-
- appear:
- .ds.w 1
-
-